﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using Disk_Pizza_Admin.dao;

namespace Disk_Pizza_Admin
{
    public partial class frmLogin : Form
    {
        OleDbConnection conexao;
        OleDbDataAdapter adapter;
        DataSet ds;
        OleDbCommand comando;

        public frmLogin()
        {
            InitializeComponent();
        }

        private void btnEntrar_Click(object sender, EventArgs e)
        {
            logar();
            
        }

        private void logar()
        {
            string login = VerificaLoginValido();
            if (!(login.Equals("errosenha")))
            {
                if (login.Equals("expirou"))
                {
                    MessageBox.Show("Sua conta expirou! Entre em contato com um de nossos representantes para comprar o Sistema.");
                }
                else
                {
                    MessageBox.Show("Bem-vindo, " + login);
                    this.DialogResult = DialogResult.OK;
                }
            }
            else
            {
                txtSenha.Text = "";
                errorProvider1.SetError(txtLogin, "Autenticação incorreta. Usuário ou senha inválido.");
            }
        }


        private string VerificaLoginValido()
        {
            banco banco = new banco();
            string con = banco.pegarConexao();
            conexao = new OleDbConnection(con);
            string sql = "";
            sql = sql + "    Select * from tblUser ";
            sql = sql + "    WHERE Login ='" + txtLogin.Text + "' and Senha='" + txtSenha.Text + "'";

            comando = new OleDbCommand();
            comando.Connection = conexao;
            comando.CommandText = sql;
            try
            {
                conexao.Open();
                comando.CommandType = CommandType.Text;
                OleDbDataReader reader = comando.ExecuteReader();
                if (reader.HasRows)
                {
                    string retorno = "erro";
                    while (reader.Read())
                    {
                        int codigo = Convert.ToInt32(reader["Codigo"].ToString());
                        string nome = reader["Nome"].ToString();
                        int qtd = Convert.ToInt32(reader["qtd"].ToString());
                        if (qtd == 100)
                        {
                            retorno = nome;
                        }
                        else if (qtd == 0)
                        {
                            retorno = "expirou";
                        }
                        else
                        {
                            diminuiQtd(qtd,codigo);
                            retorno = "Você poderá utilizar o sistema por mais " + (qtd-1) + " vez(es)";
                        }                        
                    }
                    return retorno;
                    
                }
                else
                {
                    return "errosenha";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao fazer a operação! Acesso ao banco de dados negado. Houve acesso ao banco central do sistema e por motivo de segurança o sistema ficará bloqueado. " + ex.Message.ToString());
                return "errosenha";
            }
            finally
            {
                conexao.Close();
            }



        }

        private void diminuiQtd(int qtd, int codigo)
        {
            string sql = "Update tblUser set Qtd = " + (qtd - 1) + " where Codigo = " + codigo + " ";
            executaQuery(sql);
        }

        private void executaQuery(string consulta)
        {
            
            banco banco = new banco();
            string con = banco.pegarConexao();
            conexao = new OleDbConnection(con);
            
            
            string sql = consulta;

            comando = new OleDbCommand();
            comando.Connection = conexao;
            comando.CommandText = sql;
            try
            {
                conexao.Open();
                comando.ExecuteNonQuery();                
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao fazer a operação! " + ex.Message.ToString());
            }
            finally
            {
                conexao.Close();
            }
        }

        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            this.Close();
        }

        private void txtSenha_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)System.Windows.Forms.Keys.Enter)
            {
                logar();
            }
        }


    }
}
